In the information age, information management permeates most aspects of life. People at work or at school manage information, such as work documents, papers, research, emails, data, and the like. When these people leave work or school, they deal with personal information, such as letters, videos, pictures, music, and the like, or may even continue to deal with work information remotely. Many modern information management systems represent data to the user using a hierarchical data structure. The hierarchical structure allows for a logical grouping of the information into several levels of folders. This hierarchical organization generally allows the user to more easily access specific desired data within a much much larger data repository.
FIG. 1 is a diagram illustrating hierarchical data structure 10. Hierarchical data structures, such as hierarchical data structure 10, are often described as trees having various branches and leaf nodes. Because of the hierarchical nature, descriptors, such as parent, sibling, and children are used to describe the hierarchical relationship between the various files, folders, and nodes in the structure. Hierarchical structure 10 includes two main branches represented by folders A-100 and D-101. Folders A-100 and D-101 are in the top most hierarchy of hierarchical structure 10, they are siblings to each other. Within these two top level folders are folder B-102, which is a child of A-100 and E-103, which is a child of D-101. Still again, B-102 and E-103 are folders that represent a further granular breakdown of the organization of hierarchical structure 10, but still do not represent any actual data. The data in hierarchical data structure 10 is represented by files C-104 and M-105, which are children of folder B-102, and file F-106, which is a child of folder E-103. Hierarchical data structure 10 may be organized such that files C-104 and M-105 represent data of a much different nature than that of file F-106. Therefore, when reviewing hierarchical data structure 10 of the entire data repository, a user may easily bypass the entire branch of folder D-101 and proceed directly to the branch of folder A-100 to find the desired file.
Information for such repositories may be gathered and stored in various different manners and with various different devices, such as digital cameras, digital music players, a variety of computer applications, such as word processors, spread sheets, mobile phones, and the like. There may also be multiple repositories or instances of the same information. For example, music on a digital music player may exist on the player device and also on the user's computer. Photographs from a digital camera may exist on a user's computer and also in an online photo service. Also, in networked environments, it may be beneficial to have a set of information stored on a networked or shared memory and also on a local memory, such that a user may be able to access the information either while logged onto the network or operating offline and possibly remote from the networked environment. One of the functionalities or utilities that relates to such multiple data instances is synchronization. Synchronization is the process of making the data on one of the devices or networked locations equal to or synchronized with the data on the other device or network location. If new data has been added to one of the devices or to a file in one of the network files, it will be added to the corresponding file or files in the other device or network location as well when a communication link is established between the two devices or the device and the network.
In order to locate the new information, the data management system compares each tree structure and each file in the tree structure to detect what, if anything, has changed. When the new or changed data is located, it is copied over from the originating source. Because of this synchronization process, it is standard for the data management system to create and maintain the same hierarchical data structure between the two locations. This process, however, may run into problems when data in a synchronized structure is moved in one of the synchronized locations. If data has already been synchronized and then moved from its original location, then, when the synchronizing process begins, either the corresponding data will be deleted or the data management system will force the entire restructuring of the corresponding hierarchical structure to match the newly changed structure.